/**
 * 1. 取输入目录的ts config 配置
 * 2. 取当前运行层的 ts config 配置
 * */
import ts from 'typescript'
import path from 'path'

export const getTsConfig = (entry: string) => {
  let tsConf = { compilerOptions: {} as ts.CompilerOptions }

  // 取输入目录的ts config 配置
  const configPath = ts.findConfigFile(path.dirname(entry), ts.sys.fileExists)
  // 取当前运行层的 ts config 配置
  const currentConfigPath = ts.findConfigFile(
    path.dirname(process.cwd()),
    ts.sys.fileExists,
  )
  let newConfigPath = configPath
  // 判断 输入目录的ts config 配置 是否存在 和 当前运行层的 ts config 配置 是否存在
  if (!newConfigPath && currentConfigPath) {
    newConfigPath = currentConfigPath
  }
  // 存在 ts config 配置情况下
  if (newConfigPath) {
    const data = ts.readConfigFile(configPath, ts.sys.readFile)
    const configParseResult = ts.parseJsonConfigFileContent(
      data.config,
      ts.sys,
      path.dirname(configPath),
    )
    tsConf.compilerOptions = configParseResult.options
  }
  return tsConf
}
